package org.dromara.speed.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

@Data
public class AOrderBo {

    /** api版本 */
    @JsonProperty("version")
    private String version = "v1";

    /** 应用ID */
    @JsonProperty("mchid")
    private Long appId;

    /** 插件名称 */
    @JsonProperty("xtPlugin")
    private String xtPlugin;

    /** 订单ID */
    @JsonProperty("order_id")
    private String orderAid;

    /** 币别 */
    @JsonProperty("currency")
    private String currency;

    /** 来源域名 */
    @JsonProperty("from_domain")
    private String fromDomain;

    /** 来源ID */
    @JsonProperty("customer_ip_address")
    private String customerIpAddress;

    /** 总金额 */
    @JsonProperty("total")
    private BigDecimal total;

    /** 账单地址信息 */
    @JsonProperty("billing")
    private Address billing;

    /** 送货地址信息 */
    @JsonProperty("shipping")
    private Address shipping;

    /** 产品信息 */
    @JsonProperty("product_data")
    private List<ProductData> productDataList;

    /** 回调地址 */
    @JsonProperty("callback_url")
    private String callbackUrl;

    /** 成功跳转地址 */
    @JsonProperty("success_url")
    private String successUrl;

    /** 取消跳转地址 */
    @JsonProperty("cancel_url")
    private String cancelUrl;

    /** 失败跳转地址 */
    @JsonProperty("failure_url")
    private String failureUrl;

    /** 是否手动创建链接 */
    @JsonProperty("createLink")
    private Integer createLink;

    /** 轮询组支付账号ID */
    @JsonProperty("accountId")
    private Long groupAccountId;

    /** 自选支付平台 */
    @JsonProperty("payType")
    private String payType;

    /** 这个参数不传，本系统自己生成订单编号 */
    private String orderNo;

    /** 这个参数不传，本系统自己换算美元 */
    private BigDecimal usdMoney;

    /** 这个参数不传，本系统汇率 */
    private BigDecimal rates;

    /** 这个参数不传 短链码 */
    private String linkCode;

    private Device device;

    @Data
    public static class Address {
        /** 姓*/
        @JsonProperty("first_name")
        private String firstName;
        /** 名*/
        @JsonProperty("last_name")
        private String lastName;
        /** 地址1*/
        @JsonProperty("address_1")
        private String address1;
        /** 地址2*/
        @JsonProperty("address_2")
        private String address2;
        /** 国家*/
        @JsonProperty("country")
        private String country;
        /** 州*/
        @JsonProperty("state")
        private String state;
        /** 城市*/
        @JsonProperty("city")
        private String city;
        /** 邮编*/
        @JsonProperty("postcode")
        private String postcode;
        /** 邮箱*/
        @JsonProperty("email")
        private String email;
        /** 电话*/
        @JsonProperty("phone")
        private String phone;
    }


    @Data
    public static class ProductData {
        /** 产品ID*/
        @JsonProperty("post_id")
        private String postId;
        /** 产品名称*/
        @JsonProperty("post_name")
        private String postName;
        /** 数量*/
        @JsonProperty("quantity")
        private Integer quantity;
        /** 单价*/
        @JsonProperty("price")
        private BigDecimal price;
        /** 产品描述*/
//        @JsonProperty("post_content")
//        private String postContent;
        /** 产品类型  variable  simple*/
        @JsonProperty("type")
        private String type;
        /** 属性 当type = variable 时，属性必填*/
        @JsonProperty("attributes")
        private String attributes;
        /** 产品图片*/
        @JsonProperty("image")
        private String image;

    }

    @Data
    public static class Device {
        /** 操作系统*/
        @JsonProperty("os")
        private String os;

        /** 浏览器类型*/
        @JsonProperty("brower")
        private String browser;

        /** 浏览器语言*/
        @JsonProperty("browerLang")
        private String browserLang;

        /** 时区 */
        @JsonProperty("timeZone")
        private String timeZone;

        /** 屏幕分辨率 */
        @JsonProperty("resolution")
        private String resolution;

        /** 卡号输入是否为复制粘贴   0：否   1：是*/
        @JsonProperty("isCopyCard")
        private String isCopyCard;

//        private String os; //": "Windows", //系统

        private String lang; //": "zh-CN",//语言
        private Integer sw; //": 1920, //屏幕宽度
        private Integer sh; //": 1080, //屏幕高度
        private Integer cd; //": 24, //屏幕色深
        private Integer zf; //": -480, //时区差（单位分钟）
        private String br; //": "Chrome", //浏览器
        private Integer zo; //": 8, //当前时区
        private String ua; //": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", //user agent
        private String ac; //": "application/json" //accept 请求头
    }

}
